Java集合 | 您所在的位置:网站首页 › java orderedmap › Java集合 |
4 TreeMap
上一篇,介绍了集合框架中的HashMap对象,主要讲述了HashMap的底层实现和基本操作。本篇,让我们继续来学习Map集合,今天的主角是TreeMap。 相比于HashMap来说,TreeMap理解起来更为复杂,你做好准备了吗? 4.1 TreeMap在Map集合框架中,除了HashMap以外,TreeMap也是我们工作中常用到的集合对象之一。 与HashMap相比,TreeMap是一个能比较元素大小的Map集合,会对传入的key进行了大小排序。其中,可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序; 不同于HashMap的哈希映射,TreeMap底层实现了树形结构,至于具体形态,你可以简单的理解为一颗倒过来的树---根在上--叶在下。如果用计算机术语来说的话,TreeMap实现了红黑树的结构,形成了一颗二叉树。 至于什么是二叉树,什么是红黑树,我们后面再谈,你现在只需要记住它是一颗倒过来的树,就OK了。 TreeMap继承于AbstractMap,实现了Map, Cloneable, NavigableMap, Serializable接口。 (1)TreeMap 继承于AbstractMap,而AbstractMap实现了Map接口,并实现了Map接口中定义的方法,减少了其子类继承的复杂度; (2)TreeMap 实现了Map接口,成为Map框架中的一员,可以包含着key--value形式的元素; (3)TreeMap 实现了NavigableMap接口,意味着拥有了更强的元素搜索能力; (4)TreeMap 实现了Cloneable接口,实现了clone()方法,可以被克隆; (5)TreeMap 实现了Java.io.Serializable接口,支持序列化操作,可通过Hessian协议进行传输; 对于Cloneable, Serializable来说,我们再熟悉不过,基本上Java集合框架中的每一个类都会实现这2个接口,而NavigableMap接口是干什么的,它定义了什么样的功能?接下来,我们就通过NavigableMap的源码来看下! 根据上面的截图,我们首先介绍下NavigableMap体系中的SortedMap接口: 对于SortedMap来说,该类是TreeMap体系中的父接口,也是区别于HashMap体系最关键的一个接口。 主要原因就是SortedMap接口中定义的第一个方法---Comparator e = (Map.Entry)o; return valEquals(key,e.getKey()) && valEquals(value,e.getValue()); } public int hashCode() { int keyHash = (key==null ? 0 : key.hashCode()); int valueHash = (value==null ? 0 : value.hashCode()); return keyHash ^ valueHash; } public String toString() { return key + "=" + value; } } TreeMap构造函数 与HashMap不同,TreeMap底层不是数组结构,成员变量中并没有数组,而是用根节点root来替代,所有的操作都是通过根节点来进行的。 public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, java.io.Serializable { //自定义的比较器: private final Comparator |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |